In computer networks, a number of network stations are typically interconnected via a communications medium. For example, Ethernet 802.3 is a commonly used local area network (LAN) scheme in which multiple stations are connected to a shared or dedicated serial data path. These stations often communicate with a switch or some other network device located between the data path and the stations connected to that path. The switch typically controls the communication of packets and includes logic for receiving and forwarding packets to their appropriate destinations.
In conventional layer 2 or layer 3 switches with multiple output queues, two determinations typically need to be made for every received packet: (1) the port that the packet needs to be transmitted from; and (2) the priority of the packet. Different components in the switch typically make these determinations. The received packet is queued awaiting transmission while the components make their respective determinations.
A problem arises because the component that identifies the output port and the component that determines the priority usually take different amounts of time to make their determinations. This leads to varying amounts of time that the received packet must remain queued prior to transmission. Additionally, if the determination of the packet's priority and the output port of the packet is performed in series, the total delay time must at least be equal to the sum of the delays due to these two determinations. To maintain wire speed, however, it is desirable to minimize the total delay time.